---
id: 65824561f3478e5371a33ae5
title: Крок 23
challengeType: 20
dashedName: step-23
---

# --description--

Наступний крок — визначити головну функцію, яка буде входовою точкою інтерактивної програми для відстеження витрат.

Визначте функцію під назвою `main` без параметрів. Заповніть тіло функції списком `expenses`, який ви створили на початку цього проєкту. Ви використовуватимете цей список, щоб зберігати записи про витрати.

# --hints--

Визначте функцію під назвою `main()` без параметрів.

```js
({ test: () => assert(__pyodide.runPython(`
    import inspect    
    inspect.isfunction(main)
  `))
})
```

Перемістіть список `expenses` до тіла функції `main()`.

```js
({ test: () => assert(__pyodide.runPython(`
    import inspect    
    sig = str(inspect.signature(main))
    sig == '()'
  `))
})
```

# --seed--

## --seed-contents--

```py
def add_expense(expenses, amount, category):
    expenses.append({'amount': amount, 'category': category})

def print_expenses(expenses):
    for expense in expenses:
        print(f'Amount: {expense["amount"]}, Category: {expense["category"]}')

def total_expenses(expenses):
    return sum(map(lambda expense: expense['amount'], expenses))

def filter_expenses_by_category(expenses, category):
    return filter(lambda expense: expense['category'] == category, expenses)
--fcc-editable-region--

expenses = []
--fcc-editable-region--
```
